package main

import (
	"fmt"
	"reflect"
)

//个type获取类型信息不同，Value专注于对象实例数据读写
//接口变量恢复至对象 ，切是unaddressable的，所以想要修改目标对象，必须使用指针
//就算传入指针，一样需要通过Elem获取目标对象。应为被接口储存的指针本身是不能寻址和进行设置操作的。

type User struct {
	Name string
	code int
}
func main()  {
	a := 100
	va,vp := reflect.ValueOf(a),reflect.ValueOf(&a).Elem()
	fmt.Println(va.CanAddr(),va.CanSet())
	fmt.Println(vp.CanAddr(),vp.CanSet())

	fmt.Println("---------------------")
	//注意，不能对非导出字段直接进行设置操作，无论是当前包还是外包

}